OpenBoot PROM, gestion du "BIOS"

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

La PROM est l'ééquivalent du BIOS ou EFI sur un x86 standard.

2 Approche

Pour connaitre sa version de PROM :

/usr/platform/`uname -m`/sbin/prtdiag -v

ou

prtconf -V

2.1 NVRAM

La NVRAM peut être modifiée par un utilisateur pour changer quelques options sur la machine :

Sun-prom-nvram.gif

Une fois la NVRAM enregistrée sur le chipset, lors de l'appel de la PROM au boot, elle ira checker les préférences de l'utilisateur au niveau de la NVRAM afin de les appliquer.

3 Diagnostic

Pour passer en mode Diagnostic, il faut presser : Stop+D

Pour arrêter le diagnostic en cours : Stop+A

3.1 Supprimer la possibilité d'utiliser le clavier

Si vous voulez désactiver le clavier au boot, éditez le ficher "/etc/default/kbd" et décommentez cette ligne :

KEYBOARD_ABORT=disable

Sauvegardez, quittez et lancez cette commande :

kbd -i

Quand vous aurez fait celà, vous n'aurez le droit qu'à la séquence de touche Stop+A.

4 Commandes PROM

J'ai volontairement laissé en anglais les description pour qu'il n'y ai pas d'erreurs de traduction :

Commande Description
banner Displays the power-on banner
boot Boots the system
help Lists the main help categories
printenv Displays all parameters' current and default values
setenv Sets the specified NVRAM parameter to some value
reset-all Resets the entire system; similar to a power cycle
set-defaults Resets all parameter values to the factory defaults
sifting text Displays the FORTH commands containing text
.registers Displays the contents of the registers
probe-scsi Identifies the devices on the internal Small Computer System Interface (SCSI) bus
probe-scsi-all Identifies the devices on all SCSI buses
probe-ide Identifies devices on the internal integrated device electronics (IDE) bus
probe-fcal-all Identifies devices on all Fibre Channel loops
show-devs Displays the entire device tree
devalias Identifies the current boot device alias for the system
nvalias Creates a new device alias name
nvunalias Removes a device alias name
show-disks Displays and allows a selection of device paths for the disks to be used for nvalias
sync Manually attempts to flush memory and synchronize file systems
test Runs self-tests on specified devices

ok banner
Sun Ultra 5/10 UPA/PCI (UltraSPARC-IIi 360MHz), Keyboard Present
OpenBoot 3.31, 128 MB (50 ns) memory installed, Serial #11888271.
Ethernet address 8:0:20:b5:66:8f, Host ID: 80b5668f.

4.2 Boot

  • Ceci permet d'avoir un mode interractif :
ok boot -a
Enter filename [kernel/sparcv9/unix]:
Enter default directory for modules [/platform/SUNW,UltraAX-i2/kernel
/platform/sun4u/kernel /kernel /usr/kernel]:
Name of system file [etc/system]:
SunOS Release 5.10 Version s10 64-bit
Copyright 1983-2004 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
root filesystem type [ufs]:
Enter physical name of root device
[/pci@1f,0/pci@1/scsi@8/disk@0,0:a]:
  • Pour booter sur un CD/DVD :
ok boot cdrom -s
  • Reconfigurer le boot :
ok boot -r
  • Activer le mode verbose :
ok boot -v

4.3 Help

Voici la commande d'aide :

ok help
Enter 'help command-name' or 'help category-name' for more help
(Use ONLY the first word of a category description) 
Examples:  help system -or- help nvramrc
Categories:
boot (Load and execute a program)
nvramrc (Store user defined commands)
system configuration variables (NVRAM variables)
command line editing
editor (nvramrc editor)
resume execution
devaliases (Device aliases)
diag (Diagnostics commands)
ioredirect (I/O redirection commands)
misc (Miscellaneous commands)
ok

Voici quelques exemples :

ok help boot
ok help nvramrc
ok help diag
ok help misc

4.4 printenv

Cette commande sert à lister toutes les préférences NVRAM :

ok printenv
Variable Name         Value                          Default Value
 
tpe-link-test?        true                           true
scsi-initiator-id     7                              7
keyboard-click?       false                          false
keymap
ttyb-rts-dtr-off      false                          false
ttyb-ignore-cd        true                           true
ttya-rts-dtr-off      false                          false
ttya-ignore-cd        true                           true
ttyb-mode             9600,8,n,1,-                   9600,8,n,1,-
ttya-mode             9600,8,n,1,-                   9600,8,n,1,-
pcia-probe-list       1,2,3,4                        1,2,3,4
pcib-probe-list       1,2,3                          1,2,3
mfg-mode		              off                            off
diag-level            max                            max
#power-cycles         273
output-device         screen                         screen
input-device          keyboard                       keyboard
boot-command          boot                           boot
auto-boot?            true                           true
diag-device           net                            net
boot-device           disk net                       disk net
local-mac-address?    false                          false
screen-#columns       80                             80
screen-#rows          34                             34
use-nvramrc?          false                          false
nvramrc               devalias pgx24 /pci1f,0 ...
security-mode         none
security-password     
security-#badlogins   0
diag-switch?          false                          false
ok

Pour afficher seulement 1 paramètre :

ok printenv boot-device
boot-device = disk net

4.5 Setenv

Si le paramètre autoboot est à true, le système bootera tout seul, sinon vous aurez le prompt :

ok printenv auto-boot?

auto-boot? = true

ok
ok setenv auto-boot? false

auto-boot? = false

Pour éteindre la machine, vider les buffers et les registres, utilisez cette commande :

ok reset-all
Resetting ...

4.6 Set-defaults

Pour remettre tous les parmètres par défaut, utilisez cette commande :

ok set-defaults
Setting NVRAM parameters to default values.
ok 

Pour reseter qu'un seul paramètre (ici diag-level) :

ok set-default diag-level

4.7 Probe

Pour trouver toutes les commandes probe disponibles :

ok sifting probe
(f006c954) probe-all        (f006c5a0) probe-all   (f006c378) probe-ide
(f006c1e8) probe-pci-slot   (f006bc8c) probe-scsi
(f006bd78) probe-scsi-all   (f0060fe8) probe-pci
(output truncated)
This command may hang the system if a Stop-A or halt command has been executed. Please type reset-all to reset the system before executing this command.
Do you wish to continue? (y/n) n

Si des portions de Solaris OS se trouvaient dans la RAM quand le système à été suspendu, la commande probe peut éteindre la machine. Pour éviter ce genre de chose :

ok setenv auto-boot? false
ok reset-all

Sinon vous pouvez utiliser .registers :

ok .registers
       Normal       Alternate      MMU       Vector
0:              0               0         0           0
1:              0               0         0           0
2:              0               0         0           0
3:              0               0         0           0
4:              0               0         0           0
(output edited for brevity)
%PC   0   %nPC   0
%TBA  0   %CCR   0  XCC:nzvc    ICC:nzvc

Vérifiez que toutes les valeurs soient bien à 0 sinon le système peut s'éteindre.

4.7.1 Probe-scsi

Pour un périphérique SCSI, utilisez cette commande :

ok probe-scsi
Target 1
Unit 0   Disk     FUJITSU MAB3045S SUN4.2G17059825M62990
Target 3
Unit 0   Disk     IBM     DDRS34560SUN4.2GS98E99255C5917
        (C) Copyright IBM Corp. 
         1997. All rights reserved.
Target 6 
Unit 0   Removable Read Only device SONY CDROM

4.7.2 Probe-scsi-all

Idem mais pour tous les périphériques SCSI :

ok probe-scsi-all
/pci@1f,0/pci@1/pci@1/SUNW,isptwo@4
Target 3 
Unit 0   Disk FUJITSU MAB3045S SUN4.2G1907
Target 4
Unit 0   Removable Tape EXABYTE EXB-8505SMBANSH20090

4.7.3 Probe-ide

Pour les périphériques IDE :

ok probe-ide
       Device 0        ( Primary Master )
                       ATA Model : ST 38420A (DISK)
 
       Device 1        ( Primary Slave ) 
                       Not Present
 
       Device 2        ( Secondary Master )
                       Removable ATAPI Model : CRD-8322B (CD-ROM)
 
       Device 3       ( Secondary Slave )
                       Not Present

4.8 Show-dev

Pour lister tous les périphériques :

ok show-devs
/SUNW,UltraSPARC-IIi@0,0
/pci@1f,0
/virtual-memory
/memory@0,10000000
/pci@1f,0/pci@1
/pci@1f,0/pci@1,1
/pci@1f,0/pci@1,1/ide@3
/pci@1f,0/pci@1,1/SUNW,m64B@2
/pci@1f,0/pci@1,1/network@1,1
/pci@1f,0/pci@1,1/ebus@1
/pci@1f,0/pci@1,1/ide@3/cdrom
/pci@1f,0/pci@1,1/ide@3/disk  
/pci@1f,0/pci@1,1/ebus@1/SUNW,CS4231@14,200000
/pci@1f,0/pci@1,1/ebus@1/flashprom@10,0
/pci@1f,0/pci@1,1/ebus@1/eeprom@14,0
/pci@1f,0/pci@1/pci@1
/pci@1f,0/pci@1/pci@1/SUNW,isptwo@4
(output truncated)
ok

4.9 Devalias

Pour identifier les périphériques de boot :

ok devalias
screen             	/pci@1f,0/pci@1,1/SUNW,m64B@2
net                	/pci@1f,0/pci@1,1/network@1,1
cdrom              	/pci@1f,0/pci@1,1/ide@3/cdrom@2,0:f
disk               	/pci@1f,0/pci@1,1/ide@3/disk@0,0
disk3              	/pci@1f,0/pci@1,1/ide@3/disk@3,0
disk2              	/pci@1f,0/pci@1,1/ide@3/disk@2,0
disk1              	/pci@1f,0/pci@1,1/ide@3/disk@1,0
disk0              	/pci@1f,0/pci@1,1/ide@3/disk@0,0
ide                	/pci@1f,0/pci@1,1/ide@3
floppy             	/pci@1f,0/pci@1,1/ebus@1/fdthree
ttyb               	/pci@1f,0/pci@1,1/ebus@1/se:b
ttya               	/pci@1f,0/pci@1,1/ebus@1/se:a
keyboard!          	/pci@1f,0/pci@1,1/ebus@1/su@14,3083f8:forcemode
keyboard           	/pci@1f,0/pci@1,1/ebus@1/su@14,3083f8
mouse              	/pci@1f,0/pci@1,1/ebus@1/su@14,3062f8
name               	aliases

Pour booter avec les périphériques ci dessus :

ok boot

4.9.1 nvalias

Pour créer un alias d'un périphérique déjà existant :

nvalias aliasname device_path

Pour mettre cet alias dans la NVRAM :

devalias aliasname device_path

Voici un exemple :

ok show-disks
a) /pci@1f,0/pci@1/scsi@1,1/disk
b) /pci@1f,0/pci@1/scsi@1/disk
c) /pci@1f,0/pci@1,1/ide@3/cdrom
d) /pci@1f,0/pci@1,1/ide@3/disk
e) /pci@1f,0/pci@1,1/ebus@1/fdthree@14,3023f0
q) NO SELECTION
Enter Selection, q to quit: d
/pci@1f,0/pci@1,1/ide@3/disk has been selected.
Type ^Y (Control-Y) to insert it in the command line.
e.g. ok nvalias mydev ^Y
        for creating devalias mydev for
/pci@1f,0/pci@1,1/ide@3/disk
ok nvalias mydisk ^y

Pour copier le path selectionné, faites Ctrl+Y, puis rajoutez le LUN (Logical Unit Number) du disque:

ok nvalias mydisk /pci@1f,0/pci@1,1/ide@3/disk@0,0:a

Pour ajouter le boot à ce nouvel alias :

ok setenv boot-device mydisk
boot-device =         mydisk
ok boot

4.9.2 nvualias

Pour supprimer un alias :

ok nvunalias aliasname

Exemple :

ok nvunalias mydisk
ok setenv boot-device disk
boot-device =         disk
ok reset-all
Resetting ...

Utilisez ensuite cette commande pour voir les paramètres :

/usr/sbin/eeprom

4.10 eeprom

Pour lister tous les paramètres avec leurs valeurs :

eeprom

Pour lister qu'une seule valeur :

eeprom boot-device
boot-device=disk

Pour changer la valeur d'une commande :

eeprom boot-device=disk2
eeprom auto-boot?=true

5 Syncroniser la PROM

Pour syncroniser la PROM car le système ne réponds plus par exemple :

ok sync